ROS

您所在的位置:网站首页 pix ii相机 ROS

ROS

2023-08-10 10:56| 来源: 网络整理| 查看: 265

CANALYST-II的linux版本通信解析程序 在这里插入图片描述

我们解析程序的先后顺便为:

open,打开can卡;initcan,对can卡进行初始化;start,启动can通道;就可以接收recive和发送transmit了。 open函数 DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved)

其中形参第一个DevType为设备类型,第二个 DevIndex为索引号,通常为0,第三个Reserved为保留参数,通常为 0。

初始化函数 DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_INIT_CONFIG pInitConfig)

其中形参第一个DevType为设备类型;第二个 DevIndex为索引号,通常为0;第三个CANIndex为CAN通道的索引,若使用can1,则为0,若使用can2,则为1;最后为初始化结构参数

//example VCI_INIT_CONFIG vci_conf; vci_conf.AccCode=0; vci_conf.AccMask=0xFFFFFFFF; vci_conf.Filter=1;//接收所有帧 启动CAN通道 DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex)

根初始化函数类似,型参为设备类型,索引号以及CAN通道索引

接收函数 DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex, PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);

其形参前三个跟start相同,但第四个形参 pReceive是用来接收的帧结构体VCI_CAN_OBJ数组的首指针。第五个len为用来接收的帧结构体数组的长度,最后 WaitTime为保留参数。 注:

pReceive数组大小一定要比len大,否则会出现内参读写错误len为可接收的最大长度,实际的接收长度都比此长度小waittime保留参数一般设置为100函数的返回实际读取的帧数, 若=-1表示USB-CAN设备不存在或USB掉线。 发送函数 DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD CANInd,PVCI_CAN_OBJ pSend,DWORD Length);

发送函数跟接收函数类似,psend为发送结构体的首指针,length为发送帧的长度。 注:

length一般为1,单帧的发送,发送效率较高

接收函数一般为时间触发,每多少毫秒接收一次,发送函数一般为事件触发,有内容才发送

初始化成功

打开状态提醒

跟windows下的CANtest传输 ubuntu接收,windows发送

在这里插入图片描述

在这里插入图片描述

ubuntu发送,windows接收

在这里插入图片描述 在这里插入图片描述 成功!! 详细代码见 链接: ROS-CAN通信协议程序.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3